package com.tgy.sequence;

import org.springframework.util.StringUtils;

/**
 * @Author: tgy
 * @Date: 2020-11-22 16:32
 */
public class BruteForce {

    public static int indexOf(String text,String pattern) {

        if (StringUtils.isEmpty(text) || StringUtils.isEmpty(pattern)) {

            return -1;
        }

        if (pattern.length() > text.length()) {

            return -1;
        }

        /**
         * ti 记录每一次开始匹配的位置
         * pi 每次pattern匹配的位置, text 的位置为 ti + pi
         */
        int ti = 0, pi = 0;

        char[] textArray = text.toCharArray();
        char[] patternArray = pattern.toCharArray();

        int lastIndex = textArray.length - patternArray.length;

        while (pi < patternArray.length) {

            if (textArray[ti + pi] == patternArray[pi]) {
                pi++;
            }else {

                ti++;
                if (ti > lastIndex) {
                    break;
                }
                pi = 0;
            }
        }

        return pi == patternArray.length ? ti: -1;
    }

//    public static int indexOf(String text,String pattern) {
//
//        if (StringUtils.isEmpty(text) || StringUtils.isEmpty(pattern)) {
//
//            return -1;
//        }
//
//        if (pattern.length() > text.length()) {
//
//            return -1;
//        }
//
//        int ti = 0, pi = 0;
//
//        char[] textArray = text.toCharArray();
//        char[] patternArray = pattern.toCharArray();
//
//        int last = textArray.length - patternArray.length;
//
//        while (pi < patternArray.length) {
//
//            if (textArray[ti] == patternArray[pi]) {
//
//                ti++;
//                pi++;
//            }else {
//
//                ti = ti - pi + 1;
//                if (ti > last) {
//
//                    break;
//                }
//                pi = 0;
//            }
//        }
//
//
//        return pi == patternArray.length ? ti - pi:-1;
//    }
}
